package com.puboot.common.util;
import java.math.BigDecimal;
import java.util.List;

/**
 * 电网
 * Created by chen on 2021/12/11.
 */
public class PowerGridUtil {

    /**
     * 温室气体排放总量
     * @param esf6 使用六氟化硫设备检修与退役过程中产生的六氟化硫排放量
     * @param networkLoss 输配电损失引起的二氧化碳排放总量
     * @return
     */
    public static Double getE(Double esf6, Double networkLoss) {
        BigDecimal jsgc1 = GasDCUtil.allAdd(esf6, networkLoss);
        return jsgc1.doubleValue();
    }

    /**
     * 使用六氟化硫设备检修与退役过程中产生的六氟化硫排放量
     * @param recCapacity 退役设备i的六氟化硫容量
     * @param recRecovery 退役设备i的六氟化硫实际回收量
     * @param repCapacity 检修设备j的六氟化硫容量
     * @param repRecovery 检修设备j的六氟化硫实际回收量
     * @return
     */
    public static Double getEsf6(List<String> recCapacity, List<String> recRecovery,
                                 List<String> repCapacity, List<String> repRecovery) {
        BigDecimal cl2B = new BigDecimal(23.9);
        BigDecimal rec = getRecOrRep(recCapacity, recRecovery);
        BigDecimal rep = getRecOrRep(repCapacity, repRecovery);
        BigDecimal jsgc1 = rec.add(rep);
        BigDecimal result = jsgc1.multiply(cl2B);
        return result.doubleValue();
    }

    /**
     * 输配电损失引起的二氧化碳排放总量
     * @param efPowerGrid 区域电网年平均供电排放因子  8
     * @param efSellingElectricity 售电量，即终端用户用电量 9
     * @param efSurfTheInternet 电厂上网电量 10
     * @param efInput 自外省输入电量 11
     * @param efOut 向外省输出电量 12
     * @return
     */
    public static Double getNetworkLoss(Double efPowerGrid, Double efSellingElectricity,
                                        Double efSurfTheInternet, Double efInput, Double efOut){
        BigDecimal efPowerGridB = new BigDecimal(efPowerGrid);
        BigDecimal efSellingElectricityB = new BigDecimal(efSellingElectricity);
        BigDecimal efSurfTheInternetB = new BigDecimal(efSurfTheInternet);
        BigDecimal efInputB = new BigDecimal(efInput);
        BigDecimal efOutB = new BigDecimal(efOut);
        BigDecimal jsgc1 = efSurfTheInternetB.add(efInputB);

        BigDecimal jsgc2 = jsgc1.subtract(efOutB);
        BigDecimal jsgc3 = jsgc2.subtract(efSellingElectricityB);
        BigDecimal result = efPowerGridB.multiply(jsgc3);
        return result.doubleValue();
    }

    public static BigDecimal getRecOrRep(List<String> str1, List<String> str2){
        BigDecimal result = new BigDecimal(Double.toString(0.0));
        for (int i = 0; i < str1.size(); i++) {
            BigDecimal cp_1B = new BigDecimal(str1.get(i));
            BigDecimal cp_2B = new BigDecimal(str2.get(i));
            BigDecimal cp_3B = cp_1B.subtract(cp_2B);
            result = GasDCUtil.allAdd(result.doubleValue(), cp_3B.doubleValue());
        }
        return result;
    }
}
